package cn.sprouting.tool;

import cn.hutool.core.util.RandomUtil;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 邮箱地址
 * @Date 创建时间： 2021/11/4. 9:15
 * @Author ：LX
 * 地点：长沙麓谷
 * 备注说明：
 */
public class RandomEmailTool {

    /**
     * 邮箱地址后缀
     */
    private static final String[] EMAIL_SUFFIX = "@gmail.com,@yahoo.com,@msn.com,@hotmail.com,@aol.com,@ask.com,@live.com,@qq.com,@0355.net,@163.com,@163.net,@263.net,@3721.net,@yeah.net,@googlemail.com,@126.com,@sina.com,@sohu.com,@yahoo.com.cn"
            .split(",");


    /**
     * 随机生成邮箱地址
     * @param num 生成数量
     * @param min 邮箱地址最小长度，长度不低于5
     * @param max 邮箱地址最大长度,不低于6
     * @param suffixList 生成指定后缀的邮箱，比如 @126.com @qq.com，不填则使用默认值
     * @return
     */
    public List<String> getEmail(Integer num, int min, int max, List<String> suffixList){
        if (num == null || num < 1){
            num = 1;
        }
        if (min < 5) {
            min = 5;
        }
        if (max < 6){
            max = 6;
        }
        if (suffixList == null || suffixList.size() == 0){
            suffixList = Arrays.asList(EMAIL_SUFFIX);
        }

        List<String> saveList = new ArrayList<>();
        for (int i = 0; i < num; i ++){
            int length = RandomUtil.randomInt(min, max);
            String str = RandomUtil.randomStringWithoutStr(length, "0I");
            String email = RandomUtil.randomEle(suffixList) + str;
            saveList.add(email);
        }

        return saveList;
    }

    /**
     * 随机生成邮箱地址
     * @param num 生成长度
     * @param suffixList 生成指定后缀的邮箱，比如 @126.com @qq.com，不填则使用默认值
     * @return
     */
    public List<String> getEmail(Integer num, List<String> suffixList){
        return getEmail(num, 5, 6, suffixList);
    }

    /**
     * 随机生成邮箱地址
     * @param num 生成长度
     * @return
     */
    public List<String> getEmail(Integer num){
        return getEmail(num, 5, 6, null);
    }

    /**
     * 生成一个邮箱地址
     * @return
     */
    public String getEmail(){
        return getEmail(1, 5, 6, null).get(0);
    }

    /**
     * 生成一个指定后缀的邮箱地址
     * @param suffixList 生成指定后缀的邮箱，比如 @126.com @qq.com，不填则使用默认值
     * @return
     */
    public String getEmail(List<String> suffixList){
        return getEmail(1, 5, 6, suffixList).get(0);
    }

}
